package com.gitee.wsl.collections.map.api

/**
 * Defines a map that allows bidirectional lookup between key and values
 * and retains and provides access to an ordering.
 *
 *
 * Implementations should allow a value to be looked up from a key and
 * a key to be looked up from a value with equal performance.
 *
 *
 * @param <K> the type of the keys in the map
 * @param <V> the type of the values in the map
 * @since 3.0
</V></K> */
interface OrderedBidiMap<K, V> : BidiMap<K, V>, OrderedMap<K, V> {
    /**
     * Gets a view of this map where the keys and values are reversed.
     *
     *
     * Changes to one map will be visible in the other and vice versa.
     * This enables both directions of the map to be accessed equally.
     *
     *
     *
     * Implementations should seek to avoid creating a new object every time this
     * method is called. See `AbstractMap.values()` etc. Calling this
     * method on the inverse map should return the original.
     *
     *
     *
     * Implementations must return an `OrderedBidiMap` instance,
     * usually by forwarding to `inverseOrderedBidiMap()`.
     *
     *
     * @return an inverted bidirectional map
     */
    override fun inverseBidiMap(): OrderedBidiMap<V, K>
}
